﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NUnit.Framework;
using CondominioWeb.Persistencia.NHibernate;
using CondominioWeb.Dominio;

namespace CondominioWeb.Pruebas
{
    [TestFixture]
    public class TestResidenteDAO
    {
        private ResidenteDAO residenteDAO = new ResidenteDAO();
        
        [Test]
        public void TestCrear()
        {
            Tipo_Documento TipoDocumento = new Tipo_Documento();
            TipoDocumento.Codigo_Tipo_Documento = 1;

            // 1. Instanciando el objeto TO
            Residente NuevoResidente = new Residente();
            NuevoResidente.CodigoResidente = 1;
            NuevoResidente.oTipoDocumentoResidente = TipoDocumento;
            NuevoResidente.NumeroDocumento = "80092296";
            NuevoResidente.NombreResidente = "Pedro";
            NuevoResidente.ApellidoResidente = "Perez";
            NuevoResidente.FechaNacimiento = Convert.ToDateTime("10/12/1978");
            NuevoResidente.Correo = "ggonzales@peru.com";
            NuevoResidente.ClaveAcceso = "1234";
            NuevoResidente.Estado = "Activo";
            NuevoResidente.TipoResidente = 1;
            // 2. Llamada al método del DAO a probar
            Residente ResidenteCreado =  residenteDAO.Crear(NuevoResidente);
            // 4. Implementar las validaciones
            Assert.NotNull(ResidenteCreado);
            Assert.AreEqual(NuevoResidente.CodigoResidente, ResidenteCreado.CodigoResidente);


        }

        [Test]
        public void TestObtener()
        {
            int _cod_Residente;
            // 1. Instanciando el objeto TO
            // 2. Llamada al método del DAO a probar
            _cod_Residente = 1;
            Residente ResidenteConsulta = residenteDAO.Obtener(_cod_Residente);

            // 4. Implementar las validaciones
            Assert.NotNull(ResidenteConsulta);
            Assert.AreEqual(ResidenteConsulta.CodigoResidente, _cod_Residente);
            Assert.IsNotNull(ResidenteConsulta.CodigoResidente);

        }
        [Test]
        public void TestEliminar()
        {
            // 1. Instanciando el objeto TO
            Residente  oResidente = new Residente();
            oResidente.CodigoResidente = 1;
            // 2. Llamada al método del DAO a probar
            Assert.Catch<Exception>(delegate
            {
                residenteDAO.Eliminar(oResidente);
            });
            Assert.DoesNotThrow(delegate
            {
                residenteDAO.Eliminar(oResidente);
            });

            // 3. Implementar las validaciones
            Assert.NotNull(oResidente);
            Assert.NotNull(oResidente.CodigoResidente);


        }


    }
}